package com.xbongbong.pro.rabbitmq.feign;

import com.xbongbong.paas.toolbox.wrap.XbbResponse;
import com.xbongbong.pro.message.pojo.dto.ConsistencySyncRabbitMqDTO;
import com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 数据一致性 feign
 * @author 魏荣杰
 * @date 2019/6/11 9:28
 * @since v1.0
 * @version v1.0
 */
@FeignClient(name = "pro-web-pc",contextId = "consistencySyncFeignClient")
public interface ConsistencySyncFeignClient {

    /**
     * Description: 客户 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/6/11 10:41
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/customer", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncCustomer(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);
    /**
     * Description: 联系人 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/6/11 10:41
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/contact", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncContact(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);
    /**
     * Description: 合同 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/6/11 10:41
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/contract", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncContract(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);
    /**
     * Description: 机会 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/6/11 10:41
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/opportunity", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncOpportunity(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);
    /**
     * Description: 产品 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/6/11 10:41
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/product", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncProduct(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);
    /**
     * Description: 用户 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/6/11 10:41
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/user", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncUser(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);

    /**
     * 紧跟楼上大佬脚步
     * Description: 供应商 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author 吴峰
     * @date 2019/6/20 11:20
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/supplier", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncSupplier(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);

    /**
     * Description: 仓库 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author 魏荣杰
     * @date 2019/8/5 9:27
     * @since v1.0
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/warehouse", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncWarehouse(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);

    /**
     * Description: 报价单 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author long.rao
     * @date 2019-09-10 16:13
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/quotation", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncQuotation(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);
    /**
     * Description: 采购合同 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author jyh
     * @date 2019-11-27 15:04
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/purchase", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncPurchase(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);


    /**
     * Description: 应收款 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author yuqian
     * @date 2019-11-27 15:04
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/payment", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncPayment(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);


    /**
     * Description: 付款计划 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author yuqian
     * @date 2019-11-27 15:04
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/payPlan", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncPayPlan(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);

    /**
     * Description: 批次流水 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author jyh
     * @date 2020-07-30 11:11
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/batchFlowBill", method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncBatchFlowBill(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);

    /**
     * Description: 序列号查询 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     * @author jyh
     * @date 2020-07-30 11:11
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/seqSearch", method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncSeqSearch(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);

    /**
     * Description: 线索 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/clue", method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncClue(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);

    /**
     * Description: 市场活动 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/marketActivity", method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncMarketActivity(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);

    /**
     * Description: 市场活动 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/competitor", method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncCompetitor(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);

    /**
     * Description: 销项发票 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/invoice", method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncInvoice(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);

    /**
     * Description: 销售出库单 一致性同步
     * @param consistencySyncRabbitMqDTO 一致性同步dto
     * @return com.xbongbong.paas.toolbox.wrap.XbbResponse<com.xbongbong.pro.message.pojo.vo.ConsistencySyncRabbitMqVO>
     */
    @RequestMapping(value = "/pro/v1/dataConsistency/contractOutStock", method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    XbbResponse<ConsistencySyncRabbitMqVO> syncContractOutStock(@RequestBody ConsistencySyncRabbitMqDTO consistencySyncRabbitMqDTO, @RequestParam("lang") String lang);
}
